<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实例成员和静态成员</title>
    <style>
        .标注 {
            color: red;
        }
    </style>
</head>
<body>
<h3>实例成员和静态成员</h3>

<h4>实例成员：</h4>
<p>
    通过构造函数创建的对象称为实例对象，实例对象 中的属性和方法称为 实例成员。(实例属性和实例方法) <br>
    说明： <br>
    1. 实例对象的属性和方法即为实例成员 <br>
    2. 为构造函数传入参数，动态创建结构相同但值不同的对象 <br>
    3. 构造函数创建的实例对象彼此独立互不影响。
</p>

<h4>静态成员：</h4>
<p>
    构造函数的属性和方法被称为静态成员 <br>
    说明： <br>
    1. 构造函数的属性和方法被称为静态成员 <br>
    2. 一般公共特征的属性或方法静态成员设置为静态成员 <br>
    3. 静态成员方法中的 this 指向构造函数本身
</p>
<hr>

<pre style="font-size: 20px;">
总结:
1. 什么是实例成员？
    实例对象的属性和方法即为实例成员
2. 什么是静态成员？
    构造函数的属性和方法被称为静态成员
</pre>
<hr>

<p class="标注">
    额外声明: JS这个构造函数,很像python的类
</p>


<script>
    // 声明 构造函数
    function 手机(商品名称, 价格, 库存数量) {
        this.商品名称 = 商品名称
        this.价格 = 价格
        this.库存数量 = 库存数量
    }

    // 静态成员, 不是由对象实例创建的, 是直接由 构造函数创建的
    手机.num = 10 // 构造函数 里,添加一个属性
    console.log(手机.num)

    手机.打招呼 = function () { // 构造函数 里,添加一个方法
        console.log('哈哈哈哈')
        console.log(this) // 看看, this指向谁
    }
    手机.打招呼()
</script>
</body>
</html>